package com.yangrong.thread.chapter2;

/**
 * 策略模式简单计算税后所得
 * 
 * 策略模式把对象本身和运算规则区分开来
 * 
 * 环境类(Context):用来操作策略的上下文环境，也就是我们游客。 
 * 抽象策略类(Strategy):策略的抽象，出行方式的抽象
 * 具体策略类(ConcreteStrategy):具体的策略实现，每一种出行方式的具体实现。
 * 
 * Java8 lambda表达式传入策略模式算法
 * 
 * @author YangRong
 * @date 2020年5月21日
 */
public class TaxCalcultorMain {

	public static void main(String[] args) {
//		TaxCalculator calculator = new TaxCalculator(10000, 2000) {
//			@Override
//			protected double calcTax() {
//				return getSalary() * 0.1 + getBonus() * 0.15;
//			}
//		};
//		double tax = calculator.calculate();
//		System.out.println(tax);

		TaxCalculator calculator = new TaxCalculator(10000, 2000, (s, b) -> s * 0.1 + b * 0.15);
//		CalculatorStrategy strategy = new SimpleCalculatorStrategy();
//		calculator.setCalcultorStrategy(strategy);
		System.out.println(calculator.calculate());
	}

}
